//
//  TableCache.h
//
//  Created by shunguo.chen chen on 7/31/17.
//

#ifndef __TABLECACHE_H__
#define __TABLECACHE_H__

#include "cocos2d.h"
#include <unordered_map>
#include <vector>
#include "CSVparser.hpp"

using namespace std;
USING_NS_CC;

typedef std::vector<std::string> StringList;
typedef std::unordered_map<std::string, csv::Parser*> TableDict;


class TableCache
{
public:
    static TableCache* getInstance();
    static int register2lua(lua_State* L);

public:
    TableCache();
    ~TableCache();
    
    csv::Parser* createTable(const string& key);
    void addCache(const string& key, csv::Parser* table);
    csv::Parser* getCache(const string& key);

    void removeCache(const string& key);
    void removeAllCache();
    
    string getCacheValue(const string& tabKey, const string& rowKey, const string& paramKey);
    string getCacheValue(const string& tabKey, const string& colKey, const string& colVal, const string& paramKey);
private:
    TableDict _tables;
};

#endif /* __TABLECACHE_H__ */
